A network system may comprise a host machine, e.g., server computer on the Internet commonly referred to as web server, connected via the Internet to one or more computers commonly referred to as clients. The Internet may refer to a network of computers. One or more clients may be connected to the Internet through one or more routers which enable the one or more clients to communicate with the web server. The web server may be connected to the Internet through one or more routers which enable the server to communicate with the one or more clients.
Clients may communicate with the web server by sending a number of packets in a given time interval through one or more routers for the server to process. If the number of packets that need to be serviced in a given time exceeds the capability of the web server, the server may become overloaded thereby causing the server to process the packets at a slower rate or even crash. A client that purposely sends an excessive number of packets to overload the web server may commonly be referred to as a “malicious client.”
A server overload including a server crash is at the very least annoying, and may result in serious or irreparable damage. By overloading the server, clients coupled to the server may have to wait a longer period of time to have their requests serviced. Furthermore, if the server crashes, i.e., becomes inoperative, clients coupled to the server may no longer have the ability to communicate with the server.
It would therefore be desirable to at least in part prevent server overloads by blocking an excessive number of packets to be processed by the server that would ordinarily overload the server. It would further be desirable to block the excessive number of packets of data at the routers located on the server and client side of the network system.